package com.cll.prototype.gateway.service;

/**
 * 描述信息:
 * 自定义限流
 * @author CLL
 * @version 1.0
 * @date 2020/11/1 17:58
 */
public interface IRateLimiter {

    /**
     * 获取限流令牌。限流标准：在时间窗口【timePeriod】内限制访问的次数【limitCount】
     * @param key   限流的基本单元。可以是一个API接口，也可以是指定IP访问API接口
     * @param limitCount    限流的数量。
     * @param timePeriod    限流的时间窗口。单位是秒
     * @return  获取令牌结果。true:获取成功;false:获取失败
     */
    boolean applyAcquire(String key, int limitCount, int timePeriod);
}
